#! /usr/bin/perl -w
#
# This file is part of DisOrder.
# Copyright (C) 2007 Richard Kettlewell
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
use strict;

our $last;
my %start = ();
my %end = ();
while(<>) {
    if(/sequence (\d+) timestamp (\w+) length (\w+) end (\w+)/) {
	my $seq = $1;
	my $timestamp = hex($2);
	my $length = hex($3);
	my $end = hex($4);

	if(defined $last) {
	    if($seq < $last) {
		print "$seq < $last\n";
	    } elsif($seq != $last + 1) {
		printf "%u when %u expected, missed %d\n",
		$seq, $last + 1, $seq - $last;
	    }
	}
	if(exists $start{$seq}) {
	    print "$seq: duplicate";
	}
	$start{$seq} = $timestamp;
	$end{$seq} = $end;
	if(exists $start{$seq-1}) {
	    if($end{$seq-1} != $start{$seq}) {
		printf "%u ends at %x but %u starts at %x (delta=%d)\n",
		$seq-1, $end{$seq-1}, $seq, $start{$seq},
		$start{$seq}-$end{$seq-1};
	    }
	}


	$last = $seq;
    }
}
